#ifndef MYCAMERA_H
#define MYCAMERA_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <strings.h>
#include <sys/mman.h>
#include <linux/input.h> //跟输入子系统模型有关的头文件
#include <dirent.h> //跟目录操作有关
#include <sys/ioctl.h> //ioctl的头文件
#include <linux/videodev2.h> //V4L2的头文件

#define W 640
#define H 480

//定义一个结构体，存放每个缓冲区的首地址和大小
struct camerabuf
{
    void *start; //缓冲区的首地址
    int len; //缓冲区的大小
};

class mycamera
{
public:
    mycamera();
    int camera_init();  //初始化摄像头
    int camera_capture(); //摄像头出队显示画面
    int camera_uninit(); //关闭摄像头
private:
    int camerafd;
    int lcdfd;
    int *lcdmem;
    struct v4l2_buffer otherbuf;
    //由于我申请了四个缓冲区，因此定义结构体数组存放四个缓冲区的首地址和大小
    struct camerabuf array[4];
    enum v4l2_buf_type mytype;
};

#endif // MYCAMERA_H
